<?php
// PHP配置文件，用于管理密钥和其他配置信息

// 配置文件路径
define('CONFIG_FILE', __DIR__ . '/config.json');

// 默认配置
$config = [
    // 百度OCR配置
    'baiduOcr' => [
        'apiKey' => '',
        'secretKey' => ''
    ],
    
    // 默认OCR引擎
    'ocrEngine' => 'tesseract' // 'tesseract' 或 'baidu'
];

// 初始化配置 - 先加载配置文件中的配置
loadConfig();

// 处理HTTP请求
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
    // 返回当前配置
    header('Content-Type: application/json; charset=utf-8');
    $currentConfig = getConfig();
    echo json_encode($currentConfig);
    exit();
}

// 加载保存的配置
function loadConfig() {
    global $config;
    
    // 检查配置文件是否存在
    if (file_exists(CONFIG_FILE)) {
        $configContent = file_get_contents(CONFIG_FILE);
        if ($configContent) {
            $savedConfig = json_decode($configContent, true);
            if ($savedConfig && is_array($savedConfig)) {
                $config['baiduOcr'] = $savedConfig['baiduOcr'] ?? $config['baiduOcr'];
                $config['ocrEngine'] = $savedConfig['ocrEngine'] ?? $config['ocrEngine'];
            }
        }
    }
    
    return $config;
}

// 保存配置
function saveConfig($newConfig) {
    global $config;
    
    // 更新配置
    $config['baiduOcr'] = $newConfig['baiduOcr'] ?? $config['baiduOcr'];
    $config['ocrEngine'] = $newConfig['ocrEngine'] ?? $config['ocrEngine'];
    
    // 检查配置文件是否可写
    if (file_exists(CONFIG_FILE) && !is_writable(CONFIG_FILE)) {
        throw new Exception('配置文件不可写: ' . CONFIG_FILE);
    }
    
    // 检查目录是否可写
    $configDir = dirname(CONFIG_FILE);
    if (!is_dir($configDir)) {
        // 尝试创建目录
        if (!mkdir($configDir, 0755, true)) {
            throw new Exception('无法创建配置目录: ' . $configDir);
        }
    } else if (!is_writable($configDir)) {
        throw new Exception('配置目录不可写: ' . $configDir);
    }
    
    // 保存到配置文件
    $result = file_put_contents(CONFIG_FILE, json_encode($config, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
    
    if ($result === false) {
        $error = error_get_last();
        // 检查是否是权限问题
        if (strpos($error['message'], 'Permission denied') !== false) {
            throw new Exception('权限被拒绝：无法写入配置文件。请联系服务器管理员检查 ' . CONFIG_FILE . ' 文件的权限设置。');
        }
        throw new Exception('无法保存配置文件: ' . ($error['message'] ?? '未知错误'));
    }
    
    return $config;
}

// 获取当前配置
function getConfig() {
    global $config;
    return $config;
}
?>